package com.hancheng.usercloud.business.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hancheng.commoncloud.business.entity.vo.SysUserVO;
import com.hancheng.commoncloud.framework.result.PageResult;
import com.hancheng.usercloud.business.entity.dto.*;
import com.hancheng.usercloud.business.entity.po.SysUserPO;
import com.hancheng.usercloud.business.entity.vo.UserLoginVO;
import com.hancheng.usercloud.business.entity.vo.UserVO;

/**
 * 用户信息表 Service
 *
 * @author 韩诚
 * @date 2025/06/22
 */
public interface SysUserService extends IService<SysUserPO> {
    /**
     * 用户登录
     *
     * @param userLoginDTO
     * @return
     */
    UserLoginVO checkLogin(UserLoginDTO userLoginDTO);

    /**
     * 用户修改密码
     *
     * @param updateUserPasswordDTO
     */
    void updateUserPassword(UpdateUserPasswordDTO updateUserPasswordDTO);

    /**
     * 获取用户信息
     *
     * @return
     */
    UserVO getUserInfo();

    /**
     * 分页查询
     *
     * @param sysUserPageListDTO
     * @return
     */
    PageResult<SysUserVO> getPageList(SysUserPageListDTO sysUserPageListDTO);

    /**
     * 新增用户
     *
     * @param sysUserAddDTO
     */
    void addUser(SysUserAddDTO sysUserAddDTO);

    /**
     * 修改用户
     *
     * @param sysUserEditDTO
     */
    void editUser(SysUserEditDTO sysUserEditDTO);

    /**
     * 删除用户
     *
     * @param userIdDTO
     */
    void deleteUser(UserIdDTO userIdDTO);

    /**
     * 根据登录名得到用户对象
     *
     * @param userName
     * @return
     */
    SysUserPO getUserByUserName(String userName);

    /**
     * 根据用户ID获取用户信息
     *
     * @param userIdDTO
     * @return
     */
    UserVO getUserVOByUserId(UserIdDTO userIdDTO);

    /**
     * 根据用户ID获取用户信息
     *
     * @param userId
     * @return
     */
    SysUserPO getUserByUserId(Long userId);

    /**
     * 新增用户（测试seata）
     *
     * @param userInsertTestDTO
     * @return
     */
    void insertTest(UserInsertTestDTO userInsertTestDTO);
}
